﻿<%@ Page Title="Informacja" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Informacja.aspx.cs" Inherits="MD5.Informacja" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Algorytm MD5
    </h2>
    <p>
        Algorytm MD5 jest następujący:
    </p>
    <p>
    1. Doklejamy do wiadomości wejściowej bit o wartości 1. <BR />
    2. Doklejamy tyle zer ile trzeba żeby ciąg składał się z 512-bitowych bloków, i ostatniego niepełnego - 448-bitowego.<BR />
    3. Doklejamy 64-bitowy (zaczynając od najmniej znaczącego bitu) licznik oznaczający rozmiar wiadomości. W ten sposób otrzymujemy wiadomość złożoną z 512-bitowych fragmentów.<BR />
    4. Ustawiamy stan początkowy na 0123456789abcdeffedcba9876543210.<BR />
    5. Uruchamiamy na każdym bloku (jest przynajmniej jeden blok nawet dla pustego wejścia) funkcję zmieniającą stan.<BR />
    6. Po przetworzeniu ostatniego bloku zwracamy stan jako obliczony skrót wiadomości.<BR /><BR />

    Funkcja zmiany stanu ma 4 cykle (64 kroki). Stan jest traktowany jako 4 liczby 32-bitowe. W każdym kroku do jednej z tych liczb 
    dodawany jest jeden z 16 32-bitowych fragmentów bloku wejściowego, pewna stała zależna od numeru kroku oraz pewna prosta funkcja 
    boolowska 3 pozostałych liczb. Następnie liczba ta jest obracana (przesuwana cyklicznie z najstarszymi bitami wsuwanymi w najmłodsze 
    pozycje) o liczbę bitów zależną od kroku, oraz jest dodawana do niej jedna z pozostałych liczb.
    </p>
</asp:Content>
